{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Policy Learning Notebook"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This notebook demonstrates the use of the CausalML implementation of the policy learner by Athey and Wager (2018) (https://arxiv.org/abs/1702.02896)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_predict, KFold\n",
    "from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "ename": "RuntimeError",
     "evalue": "module compiled against API version 0xe but this version of numpy is 0xd",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
      "\u001b[0;31mRuntimeError\u001b[0m: module compiled against API version 0xe but this version of numpy is 0xd"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The sklearn.utils.testing module is  deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.utils. Anything that cannot be imported from sklearn.utils is now part of the private API.\n"
     ]
    }
   ],
   "source": [
    "from causalml.optimize import PolicyLearner\n",
    "from sklearn.tree import plot_tree\n",
    "from lightgbm import LGBMRegressor\n",
    "from causalml.inference.meta import BaseXRegressor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Binary treatment policy learning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we generate a synthetic data set with binary treatment. The treatment is random conditioned on covariates. The treatment effect is heterogeneous where for some individuals it is negative. We use a policy learner to classify the individuals into treat/no-treat groups to maximize the total treatment effect.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(1234)\n",
    "\n",
    "n = 10000\n",
    "p = 10\n",
    "\n",
    "X = np.random.normal(size=(n, p))\n",
    "ee = 1 / (1 + np.exp(X[:, 2]))\n",
    "tt = 1 / (1 + np.exp(X[:, 0] + X[:, 1])/2) - 0.5\n",
    "W = np.random.binomial(1, ee, n)\n",
    "Y = X[:, 2] + W * tt + np.random.normal(size=n)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use policy learner with default outcome/treatment estimator and a simple policy classifier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "policy_learner = PolicyLearner(policy_learner=DecisionTreeClassifier(max_depth=2), calibration=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PolicyLearner(model_mu=GradientBoostingRegressor(),\n",
       "\tmodel_w=GradientBoostingClassifier(),\n",
       "\\model_pi=DecisionTreeClassifier(max_depth=2))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "policy_learner.fit(X, W, Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(469.8, 340.2, 'X[0] <= -0.938\\ngini = 0.497\\nsamples = 10000\\nvalue = [7453.281, 8811.792]'),\n",
       " Text(234.9, 204.12, 'X[5] <= -0.396\\ngini = 0.461\\nsamples = 1760\\nvalue = [1090.326, 1941.877]'),\n",
       " Text(117.45, 68.03999999999996, 'gini = 0.489\\nsamples = 619\\nvalue = [428.371, 575.3]'),\n",
       " Text(352.35, 68.03999999999996, 'gini = 0.44\\nsamples = 1141\\nvalue = [661.956, 1366.577]'),\n",
       " Text(704.7, 204.12, 'X[1] <= 0.035\\ngini = 0.499\\nsamples = 8240\\nvalue = [6362.955, 6869.915]'),\n",
       " Text(587.25, 68.03999999999996, 'gini = 0.491\\nsamples = 4252\\nvalue = [2957.726, 3857.306]'),\n",
       " Text(822.15, 68.03999999999996, 'gini = 0.498\\nsamples = 3988\\nvalue = [3405.228, 3012.609]')]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAGmCAYAAABSj/ikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAACxJ0lEQVR4nOzdd1QVx98G8OfSBaRjp4hEQGNEEzsRBKWo2BHURLFrrKgoNkDsxMRurCg/S1DR2MVeEWKLNYJdbCgiWEDAC/f9g5eNy6UKKF6fzzn3nNzZ2bmzS8bZ7+7sjCQ5OVkGIiIiIiIiIgWh9LkrQERERERERFSaGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRSVz10BIiLKm0QigZIS70cSlWdZWVmQyWSfuxpERJQLA10ionJKSUkJ2tran7saRFSAt2/fIjMz83NXg4iIcuGjAiIiIiIiIlIoDHSJiIiIiIhIoTDQJSIiIiIiIoXCQJeIiMqNli1b4vvvv0dWVpYoPSQkBMrKyjh//jwAIDAwEBKJBBKJBF5eXqK8Dx8+RMeOHaGtrQ1jY2P4+PggPT1dlEdFRUXYPyYmpmwPqhQlJSWhT58+0NPTg56eHvr06YPk5ORC93v48CG6du2KihUrQldXF15eXnj+/LkoT2hoKBo3bgx9fX1oamqiXr16WLp0qdxES7GxsejUqROMjY2hp6cHe3t7nDp1qjQPk4iIqMQ4GRUREZUbS5cuRcOGDfHHH39g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2K8SEZU/vP1IRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQGOgSERERERGRQmGgS0RERERERAqFgS4REREREREpFAa6REREREREpFAY6BIREREREZFCYaBLRERERERECoWBLhERERERESkUBrpERERERESkUBjoEhERERERkUJhoEtEREREREQKhYEuERERERERKRQGukRERERERKRQVD7VD0kkEigpMa4mypGVlQWZTFZm5bPNEX1eebVxtkuiL4NMJoNEIvnc1SCiQhR0Pf3JAl0lJSVoa2t/qp8jKvfevn2LzMzMMiufbY7o88qrjbNdEn0ZUlJSoKWl9bmrQUSFKOh6mreViYiIiIiISKEw0CUiIiIiIiKFwkCXiIiIiIiIFAoD3U/g/v37kEgkiIiIKNZ+gYGBqFKlShnVSiwpKQl9+vSBnp4e9PT00KdPHyQnJxerDF9fX0gkEvj5+YnSZTIZFi5cCBsbG2hqaqJmzZqYMGECUlNTRflOnz6NZs2aQUNDA9WqVcPkyZMhlUpLemhEH+1rb7sfunLlClRUVD7ZcREV5GtvmzKZDDNnzoSpqSk0NDTQsGFDHDhwQJQnIyMD48aNQ/PmzaGhocG2S58F22rhbRUAzp49CycnJ+jr68PIyAjt2rXD1atXS3JYBAa6n0TVqlURFRWFZs2aFWu/AQMGYN++fWVUKzEPDw+cPn0aISEhCAkJwalTp+Dl5VXk/W/evImVK1dCR0dHbtvChQsxZswY9OrVC3v37sXYsWOxbNkyjBo1Sshz7949tGnTBpUrV8aOHTvg5+eHhQsXYty4caVyfEQf42tvux8aNWoUjIyMSlpdolLxtbfNOXPmICgoCMOGDcPOnTtRt25duLu749y5c0Ke1NRUhISEQE9PD99//32pHBNRcbGtFt5W4+Li0KZNG6ioqGDTpk0ICQnBixcv0KZNG7x8+bJUjvGrlZycLPsUnzdv3siofDp9+rQMgCwyMlJIO3HihAyALCoqqkhltG3bVjZp0iSZmZmZbMKECaJtTZo0kXl6eorS/P39Zbq6usL3QYMGySwsLGTv378X0hYtWiRTUVGRPXny5COOqvx78+YN2xyVSFm33RxbtmyR1axZU+bn5yerXLlyqdT9a5BXG2e7/DqUZdtMT0+XVaxYUebv7y/K37BhQ1m7du1EaVlZWTKZTCYLCAhg2y2mt2/ffu4q0CdQHtrqH3/8IVNRURH1D3fv3pUBkG3fvv1jD+2rUdD1NJ/oloL58+ejevXq0NbWhqenJ/766y9IJBLExMQAyHvYhkQiwZIlSzB+/HgYGhqiSpUqGDNmDN6/fy/k+VTDNiIiIlC9enU0b95cSGvZsiWqVq2K/fv3F7r/vn37cPHiRUycODHP7e/fv4eurq4oTVdXF1lZWcL3S5cuwdHRESoq/6145ezsDKlUioMHDxb3kIiKhG234LYLAO/evcO4ceMQHBwMdXX1Uqk3UWHYNvNvm3fu3MGbN2/g7OwsSnd2dsahQ4eQkZEhpHEdWCprbKslb6vv37+HqqoqNDU1hTw5180fXitT8THQLaGtW7dizJgx6N69O7Zv3w4TExOMHDmySPsGBwcjMTERmzZtwqhRo7BgwQKsWrWqWL8vk8kglUoL/BS2VmtsbCysra3l0m1sbIR/qPKTkZEBHx8fzJw5M9+1Ifv27YuwsDAcPHgQb9++xdmzZ7F48WIMHTpUyJOWliZ3Ea2mpgYAuHHjRoF1IPoYbLuFt10AmDt3LszMzNCtW7eiHRhRCbFtFtw209LSACDPPjMjIwN3794t7BCJSgXbaum01c6dO0NNTQ0TJkzAixcv8PTpU/j4+KBmzZpwdXUtsA5UMJXCs1BB5s6di06dOmH+/PkAsu/SxMXFYevWrYXua2lpiTVr1gAAXFxccOLECWzfvh2//PJLkX8/NDQUffv2LTCPmZkZ7t+/n+/2pKQk6OnpyaXr6+sjKSmpwLIXLlwITU1NeHt755tn+PDhePv2LVxdXSGTyQAAvXv3xpw5c4Q8lpaWOHv2rGi/nO98P4HKAttu4W03Li4O8+bNw4kTJwosi6g0sW0W3DYtLCwgkUhw9uxZ/PDDD0I6+0z61NhWS6et1qhRA0ePHoW7uzvmzZsHADA3N8ehQ4egpaVVYB2oYAx0S0AqleLSpUuiJ5MA0KFDhyI18txDGerUqVPsF+9zv9Cel7IabhgfH4/p06dj165dUFLKf3DApk2bMHPmTMyZMwdNmzZFTEwMpkyZgrFjx+L3338HAAwZMgTOzs6YPn06hg4ditu3b8PPzw/KysoFlk30Mdh2i9Z2x40bh27dunEiG/pk2DYLb5u6urro0aMHgoKCYGNjg/r162PDhg04fPgwALDPpE+CbbX02urTp0/RvXt3NGnSBEOGDIFUKsVvv/2Gtm3bIioqCoaGhmVyDF8DBrol8OLFC2RmZsLY2FiUnvt7fnLfQVJTUxOGORSVgYGB3PuvuRX2jk5+d62SkpIKnGU1ICAAzZs3h62trTANe1ZWFtLT05GcnAxdXV3IZDKMHDkSY8aMwfjx4wFkv/tQsWJF/PTTT/Dx8YGJiQnatGmDGTNmYPr06fD394eqqir8/f2xaNEiLolApY5tt/C2Gx0djd27d+PChQtCnrS0NMhkMiQnJ6NChQp8Z5dKHdtm4W1TIpFgwYIF8PT0hKOjIwDAxMQEU6ZM+aRLstDXjW219Nrqr7/+CplMhi1btghz1djb28PExAQrVqzApEmTCjwGyh9v+5WAkZERlJWVkZCQIErP/b0shYaGQlVVtcBPrVq1CizDysoqz/cQYmJi8nxvIUdsbCwOHDgAfX194fPw4UMsWLAA+vr6SExMxIsXL5CYmAhbW1vRvvXr10dWVpZoOMnkyZPx4sULXLlyBc+ePcOQIUOQkJCApk2bFuucEBWGbbfwthsbG4u0tDTUrVtXyDN37lw8f/4c+vr6WLx4cYnPAVFubJuFt00gO5g4evQoHj58iGvXruHu3bvQ0tJClSpVYG5uXqLjJyoKttXSa6sxMTH49ttvRROyamlpwdLSEnfu3PmIM0M5+ES3BFRUVGBra4s9e/agf//+QvquXbs+WR1KY9iGq6srZsyYgejoaCGoPH36NJ48eQI3N7d891uwYIHcgtpeXl5wdHTEoEGDoKurC2VlZVSoUAEXL15E586dhXwXLlwAALkOWVtbG/Xq1QMATJs2DWZmZmjdunWB9ScqLrbdwtuuq6srjh07Jsqzbt067Nq1C9u3by/04oHoY7BtFt42P1SjRg3UqFEDaWlpCAkJQb9+/QqsF1FpYVstvbZqamqKgwcPQiqVCsHu69evcevWLbi7uxdYfyoYA90SmjBhArp37w4fHx+4ubnh0KFDOHPmDIBP856MoaFhicfut2jRAo6Ojvjpp5+E4RO+vr5wcXERPU3t378/Tpw4gdu3bwOA3FNaANDQ0ICpqSkcHByEtIEDB2LevHmoUKECmjZtihs3bsDf3x/u7u4wMTEBANy+fRubNm1C48aNIZVKsWfPHoSEhGDv3r2iO1xEpYVtVyx3261SpYrcEMjjx49DTU1N1L6JShvbplhe/er69evx/v17WFhYIC4uDvPnz4eysrLcEif79+9HSkoK/v33X6SnpyM8PBwA0KhRI5iZmZXoGInYVsU+tq0OGDAAq1evRteuXTF48GBIpVLMmzcPUqkUvXv3LtHxfe04dLmEPDw88Ntvv2Hz5s3o3Lkzbt++jaCgIACAjo7OZ65d0W3duhXNmzeHt7c3+vbtixYtWiAsLEyUJzMzE1KptNhlz507FxMnTkRoaCjatWuH3377DT///DPWr18v5FFTU8Phw4fh6ekJT09PxMTE4MiRI2jTpk2Jj40oL2y7ROUT22bhsrKyMHfuXLi6usLX1xeNGzfG8ePH5ZY4GTp0KDw8PLB161YkJyfDw8MDHh4ecqM1iD4G22rhitJWf/jhB+zfvx+JiYno1asX+vXrBw0NDRw7dow3pEpIkpycLPsUP6SsrFzgWo2KZMyYMdi4cSOePXv2uatC5djbt28LXd+tJL6mNlda2HapNOXVxtkuPw7bJn1qKSkpXNrlI7Ct0qdW0PU0x4SWUHx8PObNmwcHBweoq6vj6NGjWLx4MaZOnfq5q0ZEBWDbJSqf2DaJvgxsq1TeMdAtIXV1dVy/fh3r1q3Dq1evUKNGDfj7+2Py5Mmfu2pEVAC2XaLyiW2T6MvAtkrlHYcuE30mHLpMpNg4dJnoy8Why0RfhoKupzkZFRERERERESkUBrpfMAcHB3h5eX3uahRZamoq/Pz8YGpqCnV1dVhYWCA4OFiUJygoCK1atYKWlhYkEgnS0tLkypHJZJg5cyZMTU2hoaGBhg0b4sCBA5/qMIgK9CW1y/Pnz6N3796wtLSERCKBn59fnvmK0i4/dOXKFaioqMgtT5SRkYFx48ahefPm0NDQkNtO9Cl9SW31Q/m1r3PnzsHb2xu1atWCpqYmrK2tERwcLDdTrLe3NyQSidwnZ9mU4pRF9Cl8SW01NDQUjRs3hr6+PjQ1NVGvXj0sXboUMpl4AO3169fh7OwMTU1NGBkZYejQoXj79q0oT3p6Ovz9/YV2aGVlhblz58o9vYyIiECzZs2go6ODqlWrwsvLCw8ePCjzY/0S8B1d+iQyMzPRtm1bxMfHY+bMmTAxMcGdO3eQmJgoyrdq1SrUrl0bdnZ2OHjwYJ5lzZkzB0FBQQgKCoKtrS02bNgAd3d3REZGolGjRp/icIgUQmRkJKKjo2FnZ4cXL17km68o7fJDo0aNgpGRkVx6amoqQkJC0LRpU3z//fe4c+dOiepP9DXKr31t2bIF9+7dw6RJk1CrVi2cO3cOgYGBeP78OebNmyfKW7duXaxevVqUlrOufXHLIqL/vHz5Eu3bt4etrS20tLRw7NgxjBw5EhkZGfDx8QEAvHr1Co6Ojqhduza2bNmChIQETJgwAU+fPsWOHTuEsiZMmIDVq1dj1qxZqFevHqKiojB58mRIpVLhPejz58/D3d0d3bt3R1BQEF6+fAl/f3+0bdsWly5dgqqq6uc4DeUGA136JFatWoXLly8jNjYWlSpVAgDRgto5Hjx4ACUlJaxbty7PC+qMjAzMnj0bfn5+mDBhAgDAxcUF//77L6ZNm4Y9e/aU6XEQKZIRI0Zg1KhRAABzc/N88xXWLj+0detWPHjwAH379sXatWtF2/T09JCYmAiJRILAwEAGukTFVFD7mjBhgigAdnBwgFQqRWBgIObMmQMVlf8u+bS1tdG0adN8f6c4ZRHRf3KC2RxOTk64d+8e1q9fL2xbtmwZ0tLSsHv3bujp6QEAjIyM0KFDB5w/fx4//PADACAsLAzDhw/HyJEjAQCtWrVCbGwstmzZIgS64eHhqFSpEv73v/9BWVkZAFCpUiU4Ojri2rVraNCgwac47HKLQ5fzcfXqVTg7O0NPTw/a2tqoV68e1q9fL2xfu3YtmjVrBj09PRgbG6Ndu3a4deuWqIycoRarV6+Gubk5tLW10adPH2RkZCA6OhqNGjWCtrY2HB0d8ejRI2G/48ePQyKR4PDhw3BxcYGmpiZq1qyJjRs3Flrvo0ePonnz5qhQoQIqVaqEMWPGICMjQ9geFxeHrl27wsjISBgG8SnuzoaEhKB79+5CkJsfJaWC/5e8c+cO3rx5A2dnZ1G6s7MzDh06JDpWUjxsl6WrsPZW3Hzv3r3DuHHjEBwcDHV19TzzSCSSItePvlxsq6WvsPaV11NeW1tbZGRk4PHjx8X6rdIsi8o3ttWyZ2hoKKrbpUuX0LhxYyHIBYA2bdpAIpFg7969Qtr79++hq6srKktXVxdZWVmiPNra2kKQm5MHgCjf14q35PLRoUMH1K1bF3/++SdUVVVx/fp1vHr1StgeFxeH/v37w8LCAikpKVi+fDns7Oxw69Yt6OjoCPlOnz6Np0+fYsmSJYiLi4OPjw80NDRw5swZ+Pn5QUtLCyNHjsSQIUPknkb269cP/fv3Fxbf/vnnn2FhYYFmzZrlWefjx4/DxcUFXl5e8Pf3x8OHDzFhwgTIZDLMnz8fANCnTx+kpaVhzZo10NHRwc2bNxEfH1/gucjMzJR7tyA3JSWlfC+GMzIy8M8//8Dd3R29evXC9u3boaamhi5dumDhwoWi81WYnHcDc3fyampqyMjIwN27d2FtbV3k8ujLwnb5n5K2y7Iwd+5cmJmZoVu3brh27don+10qf9hW/1NabfVj2ldUVBS0tLTk3ue9cuUKdHR0kJ6ejkaNGmH27Nn48ccfP6os+rKxrf6nNPtVqVSKtLQ0nD59Gv/73/8wa9YsYVtaWprcdayKigqUlJRw48YNIa1v3774448/0KpVK3z77beIjo7G+vXrMXPmTCFPz549sWTJEixYsADe3t5ISkrCpEmT0KRJEzRs2LDQeiq85ORk2af4vHnzRvalSEhIkAGQXblypUj5pVKpLDU1VaatrS3bsGGDkG5vby/T09OTvXr1Skjz8PCQAZCdOnVKSFu6dKlMIpHI0tLSZDKZTHbs2DEZANnw4cNFv/PDDz/IOnToICrf09NT+N68eXOZs7OzaJ/169fL1NXVZQkJCTKZTCbT0tKS7dq1q0jH9eHvACjwExAQkO/+T548kQGQaWtry9zd3WUHDx6UhYSEyAwNDWUeHh557rN27VoZANm7d+9E6cnJyTKJRCJbunSpKN3V1VUGQBYZGVmsY/uc3rx5wzZXDGyXYiVtl7mZmZnJJkyYUGCe/NqlTCaTPXjwQKalpSU7f/68TCaTyQICAmSVK1fOt6zCtiuCvNq4orXLvLCtipVGWy1u+5LJZLK7d+/KKlasKBs7dqwofcGCBbJly5bJjh8/LgsPD5c1a9ZMpqamJpRdnLIU2du3bz93Fcoc26pYafWrSUlJon2mTp0q2j5mzBhZtWrVZBkZGUJadHS0DICsTZs2QlpmZqbsl19+EZU1ZcoUud87cOCATEdHR8jToEED2fPnz4t17F+ygq6n+UQ3DwYGBjAxMcHQoUMxatQotGrVSm4Yz9WrVzFp0iRER0eLJnHJPZyjSZMmojtelpaW0NDQQIsWLURpMpkMT58+Fb0n17FjR1FZHTt2xNKlS/Osc2pqKqKjo7FixQrRrIgODg5IT0/H9evXYW9vD1tbW0ycOBFJSUlwcnJC9erVCz0fK1aswJs3bwrMU61atXy3yf7/7pienh7Cw8OhpqYGIPupbK9evXDnzh3UqlWr0HoA2cMxevTogaCgINjY2KB+/frYsGEDDh8+DKDoQyzpy8N2KVbSdlnaxo0bh27duuH777//ZL9J5RPbqlhptNXitq+UlBR069YNZmZmmDZtmmhbznv5Odq1a4c6depg9uzZCA8PL1ZZ9GVjWxUrrX61YsWKOHfuHFJSUnDixAnMnj0burq6GDt2LABg4MCBWLhwIUaOHImAgAAkJibil19+gbKysug6dt68eQgLC8OyZctQt25dnDt3DgEBATA2Nhbe271+/Tp++ukneHl5wdPTE69evUJQUBA6dOiAEydOCNfcXysGunlQUlLCgQMHMGnSJPTp0wfp6elo1aoVlixZAmtra7x+/RouLi4wNTXF4sWLYWJiAnV1dbRr105u2Y0Px98D2UNsdXV1Re+p5fxPmHvf3O+zGhsb4/nz55DJZHLvuSUlJSErKwsDBw7EwIED5Y7p4cOHAIDNmzfDz88PI0aMwOvXr9GoUSMsWrSowEkpcv5hKkhBAWbOOWjRooWowTk6OgIA/v333yIHugCwYMECeHp6CvubmJhgypQpCAwM5JAqBcZ2KVbSdlmaoqKisHv3bly4cAHJyckAss+bTCZDcnIyKlSokO87u6R42FbFStpWi9u+MjMz4enpiadPnyI6OhpaWloF/raGhgbatm2Lffv2yW0rbln0ZWFbFSutflVZWVmYUMre3h5KSkqYOnUqhg8fDnV1dVhbW2PlypXw8fHB8uXLoaSkhEGDBkEikQjXsS9evMCUKVOwYsUK9O3bFwDQsmVLZGRkYPLkyRgyZAjU1NQwdepU2NjYYMWKFcLvN27cGCYmJggPD0fPnj0Lra8iY6CbDxsbG/z1119IT0/H8ePHMXbsWHh6euLy5cuIjo7G06dPcerUKSFAy8zMxMuXL0u1Ds+fPxd9T0hIQKVKlfKczEVPTw8SiQQzZsyQm6gJAGrWrAkAqF69OtavX4/MzExERUVh4sSJcHd3x5MnT/KdgtzJyQknTpwosK4BAf/X3n1HRXG1fwD/0hdY6SAqUixUETQhNhRFUFSigLGliCWKb4w1YqwBRYMlseaNNZZYUFHsgihYXhWNEUtsaKJiN2gEBQUpz+8Pfjth2MJSjLp5PudwDjt79+6d2fvM3Dtz504UoqOjFb5nZGQEBwcHueWynUllG+PW1tZITU3F3bt3kZOTAxcXFyxYsAC2trYqZ45l7z6Oy79VNy5rUkZGBvLz8+Hh4SH3nrm5OebOnYtx48a99nKwtwfH6t+qG6uVja9hw4bh8OHDOHr0KOzt7VV+b1mKtktV82LvDo7Vv72u46q3tzdevnwpupI9aNAgfPzxx7h+/TpsbGxgZWUFS0tLfP755wCAGzduoLCwEN7e3qK8vLy8kJubi0ePHqF+/fq4evUqAgMDRWnq1asHKysrfrIBuKNbIQMDA3Tu3BnXrl3DuHHjQER4+fIlAIiuTm7durXGH6S+c+dOBAQEiF4re06ssbExWrRogevXr2PSpEkV5q2jowNfX1+MHz8e3bt3R1ZWltLhGDUxlCM4OBg7duxAQUGBcOY5JSUF2tra8PT0rLC8itjZ2cHOzg75+flYtWoVBg0aVKV82LuH4/LtGrocFBSEQ4cOiZatWbMGu3btQkJCQqVGbDDNwrFa/VitTHxNmzYNa9aswc6dO9WeiObly5fYu3evcAWqOnmxdxfH6us7rh4/fhwSiURu1KFEIhHawGvXrkVJSQl69+4NAMKJpfT0dNEjgs6cOQN9fX2hHPb29khPTxflm5mZicePH/PFH3BHV6ELFy4gMjISffr0QYMGDfDnn39i8eLF6NChA7S0tNCyZUsYGxsjIiICY8aMwfXr1zFnzhy5YRvVtWPHDlhZWaFly5bYsGEDzpw5g//9739K08+ePRsBAQHQ0tJCaGgojIyMcOPGDezYsQPx8fEoLCxEUFAQ+vfvD2dnZ+Tm5uLbb7+Fq6urysB1cXGp9rpERkZi/fr1CA0NxYgRI3D37l18/fXXGDRokOgs8ZEjR5CVlYVff/0VALB9+3bo6enB3d0d7u7uAIB169ahsLAQDRo0wO3btzF//nzo6Ohg4sSJ1S4ne3txXIrVRFxmZWUJZ69fvHiBjIwM4R69jz76SEhXUVza2trKHcAPHz4MfX19uedlJyYmIi8vD5cvX0ZBQYHwfT4+PgpHfrB3D8eqWHVjVd342rBhA6KjoxEREQELCwucPHlSeM/d3R0mJibIyclBcHAwPv30UzRq1AiPHz/G/Pnz8eDBA9ExVJ282LuPY1WsJo6r7du3R1hYGFxdXVFcXIyDBw9i0aJFiIyMhEQiAQA8e/YMM2fORLt27aCrq4tDhw7h+++/x4oVK2BhYQGgNO67d++OyMhIvHjxAh4eHvjll18QGxuLiIgI4XFCERERCAsLw+DBg9GnTx9kZ2cjJiYG9erVk7v3+V+JZ12W9/DhQ/r444/J0dGRDAwMqE6dOjRo0CDRDGZ79uwhV1dXkkgk5OPjQ2lpaXKzlpafJY5I8UyJslnnrly5InqdnJxMAQEBJJFIyMHBgX7++WfR5xTlf+zYMerYsSNJpVKSSqXUtGlTmjx5MhUWFlJ+fj4NHjyYGjduTBKJhKytralnz570xx9/1Mh2q8jp06fJ19eXJBIJ2djY0KhRo+Rmb1U2413ZWe7WrFlDzs7OZGBgQDY2NjR06FB6/PjxP7IONYlnXa4cjsuaJ1snRX/l16miuCxP2aywDg4OCvNavXp1Da/dm/dvnXWZY/X1U7QdwsPDlcbzoUOHiIjo5cuXFBoaSnZ2dqSvr08mJibUuXNnSktLq3Remu7fMOsyx2rNGz16NLm4uJChoSFZWFhQixYtaN26dVRSUiKkyc3NpcDAQDI3NyeJRELvv/8+bd++XS6v7OxsGj16NDk5OZGhoSE1btyYoqOjhVmrZTZu3EjNmzcnqVRKtra2FBoaShkZGa97Vd8aqtrTWtnZ2arvuq4hOjo6kEql/8RXvfMOHz6MDh064MqVK/xMWA2Wm5uL4uLi15Y/x1zN4rhklaUoxjkuXz+OVVYT8vLyePKt14xjldUEVe1pfhYLY4wxxhhjjDGNwh1dxhhjjDHGGGMahYcuM/aG8NBlxjQbD11m7N3FQ5cZezfw0GXGGGOMMcYYY/8a3NFljDHGGGOMMaZRNKaj2759e/Tt2/dNF0Ntt27dgpaWlvCXn5+vMF1kZCS0tLQwYcIE0fKlS5ciICAANjY2MDMzQ/v27XHs2DG5z2dkZCAkJATW1tYwMzODn5+fymeTyXzyySdo1KgRjIyMYG1tjS5duuDMmTOiNO3btxetQ9m/tLQ0Id2PP/6IoKAgmJmZQUtLC1evXlVnEynk6Ogo9112dnZVKpc6eSkyd+5ceHl5wdTUFLVq1cL777+PzZs3i9KsX79eyLNly5ZVXt+3labF22+//Ybg4GDhN/3ggw/k6ntRURFmz56Nxo0bw8DAAHZ2dhgzZowoTVXrekFBAcaOHQtbW1sYGhqibdu2wjNrZQ4fPqywTk+ZMkUuv8zMTPTr1w+WlpYwMjKCl5cXkpKS1CpLWZs3b0ZISAhsbGygpaWlMI/Tp08jICAAtWvXhoGBARo0aICvvvoKz549q3K5VqxYAU9PT0gkEtSuXRt9+vSpsKyKto2vr68ojaKYl/09ePAAALBmzRqlaSIiIoS8ZM9w1NLSwtKlSyss3z9BU+LywYMHiIyMRNOmTWFsbAx7e3tERETgyZMncnmsWLECzs7OMDAwgJubG9avXy+XpqbqhiIDBgxQ+rm4uDgApc/MjIqKgo+PD0xMTFCnTh307dsXt2/fVphnVep/eerGZU5ODkaMGAEHBwcYGxvD09MTK1euFKVRFhNl0ynbP2lpaaFz584qy6rOMRUAnj59ivDwcJiZmcHMzAzh4eHIzs6WS/fkyRMMGzYMtra2kEgkcHV1xc8//yy8/zYcnzUlVgH12otlPXz4ECYmJgqPxfn5+Rg9ejSsra0hlUrRo0cP3L17V5QmOjpaYT07ePCgynU4cOAAevfuDXt7exgbG6Np06ZYtWqVKE1lYjUpKQmtWrUSpcvMzFRZBkX27duHtm3bwsrKChKJBM7OzpgxYwZevXolSldSUoKYmBjY2dnByMgIHTp0wKVLl0Rpfv/9dwwZMgQeHh7Q1tZWWMcqs39VpKL4AtSLVXXaPTNmzBB+36rGi26VPsVqzPz589GyZUsYGBjIvXft2jUsX75c4YPZY2NjERQUhJEjR8LAwAArV66Ev78/Tp06hWbNmgEAnj9/jsDAQNSuXRsrVqyARCLBokWLEBQUhHPnzqFx48ZKy1VUVITIyEg0atQIubm5WLBgAfz9/XH+/Hk4OjoCKG3Ulz9ofvPNNzh79ix8fHyEZevWrYOOjg46duyIhISEqmwmkc8++wxffPGF8Lr8tlO3XOrkpUhOTg4++eQTNGnSBLq6uti+fTv69u0LPT09hIWFAQCCgoKQlpaGmJgYtXce7PVTFG/nzp1D27Zt0aNHD6Fxdfr0abx8+VL02QEDBiA1NRVRUVFwdXXFnTt3cPnyZVGaqtb1kSNHYtOmTZg9ezbs7e2xePFiBAQE4Pz583BwcBCl3bRpk2hZ+ZMzd+7cQatWreDl5YVVq1bB2NgY586dk1sfdWzduhV3795FUFAQ1q1bpzDN06dP4eHhgYiICFhbW+Py5cuIiorC77//jp07d1a6XFOmTMEPP/yAKVOmwMfHB48ePcKRI0fUKu/48eMRGhoqvC6/79y+fTsKCgpEy4YMGQIdHR3UqVMHANCtWzfRCTEAOHXqFEaPHo0uXboIyxYvXoycnBy0atVKrbIx5crH5ZkzZ7Bjxw4MGTIEPj4+uHfvHqZOnYrz58/j+PHj0NHRAQDExcUhIiIC48ePh7+/PxITE9G/f39IpVKEhISIvqMm6oYiU6dOxbBhw0TLlixZgo0bNyIwMBAAcPv2baxcuRKff/45YmNjkZOTg5iYGLRv3x7nz59HrVq1hM9Wp/6XpW5choeHIy0tDbGxsXB0dMS+ffswZMgQGBoa4pNPPhHleeTIEejr6wuvGzZsKPzfvHlzubi5ffs2+vTpI4obRdQ5pgJAr169cPPmTaFzMm7cOPTt21d0suzZs2do164dpFIpFi9eDCsrK1y+fFnUaeDjc9UpOoaq014sa8KECTAyMsLz58/l3hs+fDh27dqFefPmwdLSElOnThXarLq6f3dZLCwssHfvXtFn3d3dVZZ9xYoVyM/PR2xsLOrWrYuUlBQMHToUL168wJdffglA/Vj99ddf8eGHH6J3796YPn06/vrrL3zzzTfo2rUrzp07Bz09PbW36V9//YU2bdpgzJgxMDc3x+nTpxEdHY2srCwsXLhQSDdz5kzExsbiu+++Q+PGjTFnzhwEBgbi0qVLMDc3BwBcunQJycnJaNWqFfLy8hR+n7r7V0XUiS9AvVhVp90zcOBABAQEiNrplabsAbs1/ff8+fPX+rBgRQ+TfpvdvHmTAFBiYqLSNF27dqVJkybJPZibiCgrK0v0uqioiNzc3GjgwIHCssTERNGDuYmIXrx4QRKJhObNm1ep8ubm5pK+vj4tXLhQaZqCggIyNzenYcOGiZYXFxcTkfyDwqtC0baoiLJyVSUvZVq3bk2hoaFyy8PDw6lFixYKP6PqAddve8xpUry1aNGC+vXrp/LziYmJpKurS5cuXVKZrip1/c6dO6StrU2rVq0SluXn51PdunVp+PDhwjJ18+zTpw/5+voKZakOWR7q7K/KWr58OWlpaVF2dnalynXx4kXS1tam5OTkSpcVAC1ZsqRSn3nw4AHp6OjQrFmzVKb74osvyNTUlPLz8yv1vYpinOPyb8rq1dOnT6mwsFC07MSJEwSAjhw5Iixzdnam/v37i9KFhYWRh4eHaNnrrBuKuLu7U1BQkPA6NzeXXrx4IUpz9+5d0tbWprVr1wrLqlP/1VE+LvPy8khbW1tu27Rr1466d+8uvF69ejUBoJcvX1bq++bMmUPa2tp07969Spe1/DH12LFjBICOHz8uLDty5AgBoLS0NGHZ119/TQ0bNpTb3oqoOj4Tlf5ur4umxKoiqtqLp06dIjMzM5ozZ45cncrMzCRtbW3asGGDsOzGjRukra1NcXFxwrKoqCiqXbt2pdehfLuZiGjo0KHk5OQkKrs6sfr1119T3bp1qaioSFiWmppKACg9Pb3SZStv0qRJZGFhIbx+8eIF1apVi2bOnCksy8nJITMzM4qNjRWWlT2+Kqtj6u5fFVEnvtSJVXXbPRWti4yq9vQbHbq8cuVKSCQSuatvx48fh5aWFs6dOwcAWL16NVq1agUzMzNYW1ujW7duuH79usq8FQ0LSUpKgpaWFm7duiUsy8vLw+jRo1G3bl1IJBK0aNECJ06cqJH1q459+/YhPT0dEydOVPi+lZWV6LWOjg48PT1x8+ZNYVlhYSEAwNTUVFgmkUigr6+PkpKSSpXHyMgIEolE7qxNWUlJSXj69Cn69esnWq6t/WZHyCsrV02ytLRUuW3eBhxv8i5fvoxTp05hxIgRKtOtWrUK/v7+FZ4xrkpd/+2331BSUoJOnToJywwMDNCuXTu5M9YVycnJQUJCAr744osaibuq5mFpaQkiEmJC3XKtXbsWjRo1Eq6EvW5btmxBSUmJyiFRxcXFiI+PR1hYmFojPiqL41KemZmZ6OoNAHh7ewOAcIx78eIFrl+/LoobAOjUqRMuXbpUpSGEZalTNxS5cOECLl++LDreGBsbw9DQUJSuXr16sLKyEh2zX3f9Lx+XRUVFKCkpEbURgNI2Q2XbCIrExcXBz88PdevWrVJZyx5Tk5KSUK9ePbRu3VpY1q5dO9SpUweJiYnCstWrV2Pw4MFy27smcKyqR1l7kYgwYsQITJ48GdbW1nKfO3DgALS1tUUjL5ycnNCiRQvRb1xV5dvNQOl+JTMzU6jv6sZqYWEhpFKp6OqnLI5qInYsLS1FI0xOnDiB58+fo3fv3sIyExMTdOnSRbRt1Dlmq7N/VUad+FInVmuy3VORN9oDCQsLQ0lJiWgYDVB6gHF2dhY2/O3btzF48GAkJCQIl8F9fX0V3gNWGUSE0NBQbN68GdOmTcPOnTthb2+PwMBA3L9/X+Vni4qKKvwjqtqTm169eoUxY8Zg5syZaj+Gori4GKdPn0ajRo2EZR07dkT9+vURGRmJ+/fv48mTJ5g4cSJ0dXXVuueHiFBUVISHDx9i/Pjx0NXVVXnQ37RpE+zs7NC2bVu1ylxVy5cvh76+PkxNTdGrVy+l9zmpU67K5lVWUVERcnJysHHjRhw4cEBu+NrbhuNN3qlTpwCUDvPz8vKCrq4uGjZsiJ9++kkunbOzM7788kuYmJjAyMgIYWFhFZZbHbJ7lMp3ovT19ZGZmSk3tNfPzw86OjpwdHTEt99+Kzqopqeno7CwEFpaWmjTpg309PRgZ2eH2NjYKu+P1FVcXIyCggKcO3cOM2bMQO/evYXGjLrlOnXqFJo0aYLo6GhYWVnBwMAAAQEBuHLlilplmDJlCnR1dWFlZYXBgwfj6dOnKtNv2rQJrVq1khseXlZKSgqysrJe24kyjkv1yIbFyo5xBQUFICKFcQNArs68jrqh7HMSiURu6HR5f/zxB7KyskTH7OrWf0VUxaWJiQl69uyJOXPm4OLFi3j+/Dm2bNmC5ORk0f3oMg4ODtDV1YWrqytWrFih8nuvXbuGs2fPVipuVB1TMzIy4OrqKvcZNzc3YS6Emzdv4s8//4SZmRm6du0KfX19WFtbY+zYsTVyIppjVXXZKmovrl27Fk+ePMHIkSMV5pGRkQEHBwe5TlTZ31jmyZMnsLS0hJ6eHpo1a4YdO3ZUqdxpaWlo0KCByg6iolj9+OOPcevWLSxYsADZ2dm4efMmJk2ahBYtWqB58+ZVKktxcTFevnyJ48ePY9GiRRg+fLjwXkZGBvT09ES3CwCKt01VlN+/KqJufKkTq5Vt91TLmx663KVLFwoODhZel5SUUN26dWnKlCkK0xcVFdGLFy9IKpXS+vXrlV7WVnSZWzaU9+bNm0RElJycTADoxIkTovydnZ3pq6++UnqJnEr3BhX+HTp0SOnnVQ0DmTNnDnl7ewtDENQZYjt37lzS0dGhs2fPyn2Pm5ubUCZLS0s6efKkyrxk5s+fL3zO2tpa5efy8vLI2NiYxo4dqzRNTQxdHjlyJG3cuJGOHj1Ky5cvJzs7O3J0dKRnz55VulyVzauss2fPCttGV1eXli1bpjDd2zZ0meNNHG/ffvstASALCwuKjY2l1NRU+vLLLwkA7d27V0inr69PUqmUWrVqRXv37qXNmzeTo6MjffDBB1RSUiL3fZWp6xcuXJD7vpKSEiFuZcP+0tPTacKECbR37146cOAAjRkzhnR0dER1e+PGjQSAatWqRZGRkZSamkpRUVGko6ND//3vfyssizLqDFvz8vISfougoCDR0CZ1y+Xs7ExSqZRcXFwoISGBdu3aRd7e3mRvb1/hsMnw8HDaunUrHTlyhObNm0fm5ubk4+MjGlpW1q1bt0hLS4sWLVqkMt+BAweSjY2N0nxQA0OXOS5VD4csKCig5s2b0/vvvy9abmFhQZGRkaJlw4YNIwCi4Y+vq24o0qBBAwoLC6swXXBwMNnZ2YnipDr1XxlVcUlE9PLlSwoJCRHS6Ojo0NKlS0VpkpKSKCYmhvbv30+JiYkUHh5OAFRun2nTppGenh49efJErXJWdEwNCAignj17yn2uZ8+eFBgYSER/D7+USqU0cOBAOnjwIC1YsIAMDQ3l6glR1YYuc6wqjtWK2ovPnj0jW1tbSkhIICLFw+E///xzeu+99+Ty/uqrr6hx48bC63Xr1tH3339PqamptHPnTgoODiYAtHPnTpXboLyTJ0+Sjo4OLV68WGU6RbFKRLR//34yMTER1rtZs2b0559/VqoMZZmamgp5hYeHi9oWM2bMIEtLS7nPLF68mPT09BTmp+7weGX71/LUjS91YlXddo+666KqPf3GJ6Pq06cPhg4diuzsbJiZmeHYsWO4f/++6Irjb7/9hkmTJuHkyZN4/PixsLyioSAVSU1NRf369eHj44OioiJhuZ+fn8oZ44DSyWoq4uLiUukyPXz4EDExMdi1a5fawwaPHj2KyZMnY+rUqcIZRaB0iIvs7O2cOXOESau6d++O48ePqzxzA5SesfL19cXDhw+xdOlSBAcH49ixYwrXa/fu3cjLy3utw4MBiG7Mb9u2Ldq0aQMvLy+sXbtWmExA3XJVNq+yXFxccPr0aeTk5GDfvn0YPnw4zMzMRMNK3kYcb2L0/2ewBw8eLMxs3qFDB2RkZCA2NhZdu3YV0pWUlGDXrl3C8Cc7Ozu0adMGqamp6NixY6W/W8bT0xNt2rQRZh+sX78+5s2bh2vXrgH4eyhSs2bNhInmgNJZfyUSCb777jtMmTIF5ubmwvoEBQVhzpw5wvrcv38fsbGx1ZvQoQIbN25ETk4OLl68iOnTp6N3797YvXs3AKhdLiJCbm4utm3bBg8PDwBA06ZN0ahRI2zYsAGDBw9W+v1r1qwR/m/Xrh08PDzQuXNnJCYmIjg4WC79pk2boK2trTJmX716he3bt+OTTz5ROUFHdXFcqjZy5Ehcu3ZNbrKjYcOGYeHChWjZsiU6dOiApKQkYdK0ssfP11E3FDl16hRu3LiB2bNnq0w3a9YsJCUlISkpSXT1qjr1XxlVcQkAY8eORXp6OtauXQsHBwekpKRg1KhRsLa2FiaC6ty5s2jm5KCgILx69QoxMTH48ssvoaWlJfe9mzZtQqdOnWBhYaFWOWvimCrbz7i7uwtXUjt27Ii8vDxMnz4d0dHRMDIyUjs/RThWFauovRgTEwMXFxfRsOSq+vTTT0WvP/zwQ/j6+mL69Ono3r27Wnk8evQIvXv3Rvv27VUeF5XF6qVLl/Dpp5+ib9++6NOnD3JycoTvLz9pm7oOHz6M3NxcnD59GjExMRg5ciQWL15c6XwqS9n+tbyajC912z014Y13dENCQjB06FDs2LEDAwYMwJYtW+Du7o4mTZoAKJ3hq3PnzsKMXPXr14eBgQG6deum9JE86nr8+DHu3LmjcHa08sMDyivboVSmKg2jqKgotG7dGt7e3sj+/6m4S0pKUFBQgOzsbJiamooOKleuXEFISAh69eqFqKgoUV4//fQTrl69irt37wozTHbs2BEeHh6YM2cOli9frrIsNjY2sLGxAVB6YGvSpAlmz54tNx07UHpQa9SoEd5///1Kr3N1uLu7w8XFBenp6Qrfr0y5KsqrLENDQyHPjh07IicnBxMmTHjrO7ocb2KymQr9/f1Fy/39/TF37lxROicnJ9E9Pq1atYJEIsHly5er1dEFShvivXr1wnvvvQcA8PDwwKhRo7B48WJYWloq/VxYWBhiY2Px22+/oV27dirXZ8WKFXj27JnCWdxrguz+5VatWsHNzQ1t27bF0aNHK1Uuc3Nz1K5dW2jkA6XDJRs2bCg3w3VFAgMDIZVKkZ6errQz06FDB9SuXVtpHomJicjOzn7tJ/A4LpWbNWsWVq5cid27dwvbQ2by5Mm4fv06evbsCaB0Jtbo6GhERkbC1tZWaZ41UTcU2bRpE2rVqoVu3bopTRMXF4dJkyZh2bJlcvuNmqz/Mqri8sKFC1iyZAlSU1PRoUMHAKWdpkePHmHChAmiGY/LCwsLQ1xcHO7cuQN7e3vRe+fPn8eVK1cwefJktctZ0THV3Nxc4XDzp0+fCvtl2X5Gti4y/v7+mDx5Mv744w94enqqXSZFOFYVU9VezMzMxKJFi4T9KVB6jz1QOn8DEcHQ0BDm5ubIycmRy/vp06fCb6uIlpYWQkNDMWHCBBCRwhMvZeXl5aFbt26QSqXYunWr0k6VqlidOnUq3NzcsGzZMmHZBx98gPr162Pr1q34+OOPVZZBEdlv5OvrC2tra/Tv3x/jxo2Dg4MDzM3N8ezZM7n1q2jbVETV/rU8deNLnVgFqt7uqaw33tE1NTVFUFAQtmzZgv79+2Pbtm2ie0NOnjyJBw8e4H//+58QyMXFxfjrr79U5qvoRvjyG97CwgIODg7YunWr3OcrmnREnanDDx06hPbt21eYrqyMjAwcOXJEruIuWLAACxYsQFZWllBR7t+/j6CgIOFxHeVdvXoVTk5OooattrY2PD098ccff1SqXLq6umjSpAlu3Lgh915OTg4SExMxfvz4SuVZkxTt2Kparop2kop4e3tj1apVKCkpeeOTb6nC8Sbm5uamcDkRiX5HNzc3pY2Umvi9GzVqhLNnz+LGjRsoLCyEs7MzRowYgebNm6u17rI6q2p9aqqs6pAdsG/cuIF27dqpXS43NzeFkwiV/z3UIdsmiuI5IyMD586dk7sXu7xNmzbB3t5eNKnG68Bxqdj69esxadIkLF26VOEjaoyMjLBlyxY8evRIuIduz5490NfXV3mfXE3UjfJKSkqwZcsWhISEKJ2oJTU1FQMGDMCECRMwZMgQufdrsv4rUj4uZffLle8EeXl54aefflKr06Dsaq6hoSF69OhRrbKWPaa6uLiIrszLXL16FZ9//jmA0s6eoitpNbn/41itWPn24s2bN1FQUCB3ohMAbG1tMXz4cPzwww9wcXFBZmYm8vPzIZFIhDRXr15VeM9neeq03YqKivDRRx/h3r17OHnyJMzMzBSmqyhWr169KjdpnGzSqsq2rxXx9vYGEeHmzZtwcHCAi4sLCgsLcePGDdFJDXW3jSIV7V/LUze+1IlVoPrtHnW98Y4uUDoUZMCAAdi5cycePHggGgIiuyG57MbdunWraNiGInZ2dnIz0SUnJ4te+/v7Y968eTAzM6twGG95r2sYiOzG9rL69u0Lf39/DB06VJjV7dmzZ+jatSukUim2b9+usPLZ29tj3bp1whAboHSHe/78efj6+laqXPn5+UhPT4efn5/ce7LnD77uqx6KXLx4EVevXsV//vOfapdLVV4VOX78OBwcHN7qTq4Mx9vfWrduDXNzcxw8eBBBQUHC8pSUFHh5eQmvg4OD8c033yArK0uYyOX48ePIz88XpauuBg0aACg9c79lyxbMnDlTZfqtW7dCT09PuErh6OgIDw8PHDx4UDSRS0pKCho2bKj25HbVdfz4cQClM2ZWplzBwcFYu3YtLl68KJxdvnXrFm7cuFHp7ZyUlITc3FyFHZ64uDjo6+urvGKVl5eHXbt2KR2aWdM4LsUOHjyIQYMGYeLEiRg6dKjKtLVr10bt2rVRUlKCpUuX4qOPPlI5cqG6dUORo0eP4v79+0qPNxcuXEBoaCh69eqlNK5rsv4rUj4uZVdi09PTRVeszpw5AwcHB5X1fuvWrbCxsZF7jjdQ2tH98MMPq7W/KX9MDQoKwowZM3Dy5Em0bNkSAIRhw7JGur6+PgIDA5GSkiLKKyUlBUZGRpWu38pwrKpWvr3o7e2NQ4cOidIkJSVh9uzZ2L9/v1AfO3XqhOLiYuzYsUOYyCozM7PCJyMQEbZt2wZvb+8K99VDhw7FsWPHcOTIEaUTzakTq/b29nKj/zIzM/H48WOFzw6uLFmsyvJq06YNatWqhfj4eOE2q+fPn2Pfvn34+uuvK51/ZfavMurGlzqxWlZl2z2V9qYno5LdRGxoaEh16tShpk2bit57+PAhGRsbU5cuXSg5OZn++9//koODA5mZmYkmaCp/o/KePXsIAI0bN44OHDhA48ePJwcHB9GN/SUlJdS5c2dydHSkJUuW0KFDhyghIYEmTJhA8+fPV1remlCZZ5IpmowqICCADAwMaMuWLZSWlib8lX1+V2ZmJkmlUmrTpg1t376d9u3bRyEhIaSjo0O//PKLkG7QoEHUsGFD4fWePXuoX79+tH79ejp06BDFxcWRr68vGRoa0rlz5+TK17lzZ/Ly8lJa/tOnT1N8fDxFR0cTAFq4cCHFx8fT6dOnhTSyyXtUTYawZ88e6tu3L61fv55SU1Ppxx9/pLp165KTk5PCCaRUlUvdvNauXUs6Ojp069YtIiLKzs4mX19fWrZsGR08eJB27dpFAwcOJAAKJ6R62yajkn0vx9vf5s+fT3p6ehQTE0PJycn0n//8h7S0tOjo0aNCmpycHKpfvz598MEHtHPnTtq4cSPZ29tTQECAKC916nr5OkVEtHDhQiHeli9fTk5OTuTv7y96Jt6wYcNo6tSptGvXLkpKSqKRI0eStrY2jRs3TlSGhIQE0tLSorFjx1JycjJNmTKFtLW1RROhyLbH6tWrVW63S5cuUXx8PP34448EgCZPnkzx8fF0+PBhUbm++eYb2rlzJ6WkpNB3331HVlZW1KZNG9FkGuqUq6ioiJo3b06NGzemLVu2UEJCAnl6epKbmxu9evVKSOfv70/+/v7C62XLltGQIUNo8+bNlJKSQnPnziVTU1Nq0aKFwuf2urq6Uo8ePVSue1xcHAGQm+CvPNTAZFSytByXpS5fvkwmJibk4+MjOr6lpaXRnTt3hHS7d++mH374gVJSUiguLo78/f2pbt26dPfuXSFNTdcNHR0dmjZtmtzyiIgIsrKykns+JVHp71evXj1ycnKiI0eOiNbn999/F9KpW//Dw8PJwcFBaRmJ1IvLwsJCat68OdnZ2dGqVavo4MGDNGHCBNLW1qbvv/9eyCssLIxmzZpF+/bto927d9Onn35KAOiHH36Q+960tDQCQNu3b1dYruocU/39/alhw4aUkJBA27ZtowYNGlDnzp1FaU6dOkV6enrUv39/2r9/P3333XckkUhoxowZcmWp6nN0OVb/Vtn2ooyyZzMPGjSIrK2tad26dbR371567733yMPDQxRX7dq1o4ULF9L+/fspISGBunTpQlpaWrRr1y5RXuVjdcaMGQSAoqOj5fYrsmekqxurCQkJBIAGDRpE+/fvp82bN1OTJk3Izs6OcnJyhHR+fn7k5+enctv27NmTZs+eTXv37qXk5GSKiooiY2Nj6tevnyjd9OnTycjIiH788Uc6cOAABQYGkq2tLf31119Cmry8PIqPj6f4+Hhyd3enNm3aCK/z8vKISP39q6K2irrxpU6sqtPuKbsdqzoZ1VvR0ZX90AAU7oz27NlDrq6uJJFIhB+mfOdP0Ub49ttvyc7OjqRSKfXv35/i4+NFOw2i0hkHJ06cSI6OjqSnp0d169alkJAQOnbsmMryVld1O7pQMmte+YPfL7/8Qp06dSJLS0syNTWl1q1byz2MvvxB88qVK9S9e3eytbUlfX19sre3p169etHFixflypaVlUW6urqiB1aXJ5uhsfxfeHi4kGbv3r0EgC5duqQ0n/Pnz5O/vz9ZWVmRrq4u1a5dm8LDwxU+jL6icqmbl2xnLKsz+fn5FB4eTg0aNCADAwOysbEhPz8/2rNnj9J1f9s6ukQcb+V9//33QpmaNGlC27Ztk0tz/fp16tKlCxkZGZGZmRmFh4eLDjBE6tX18nWKiGjWrFnk6OhI+vr6ZGdnR+PHjxcOSjILFy4kT09PkkqlpK+vT+7u7jR//nyFsz6vW7eOXF1dSU9Pjxo2bCjXEbt06ZLcjIeKREVFKVyfsgfulStXko+PD5mampKxsTF5eHjQtGnTFNa/ispFVNrQ6Nu3L5mYmJBUKqWQkBDKzMwUpSnfeDh48CC1bt2aLCwsSFdXl+zs7GjEiBGUnZ0tl79sdte4uDiV696jRw9ydXVVmYao5jq6RByXMrIYUfQXFRUlpEtMTCRPT08yNDQkc3Nz6tu3r1xdqem6Ub4MRKUdRisrK4qIiFD4GdmJ3Ir2DUTq1f9evXqRj4+P0jISqR+X9+/fpwEDBpCdnR0ZGhqSh4cHLVq0SNTYnDhxIjk7O5OhoSFJJBJq3rw5/fzzzwq/d9SoUWRqaip0HMqrzjH1yZMn9Nlnn5GJiQmZmJjQZ599Rk+fPpVLl5SURM2aNRP2p9OnT1fYeK5qR5eIY1WmMu3FspR1dF++fEkjR44kS0tLMjIyog8//FDU+SIq7Qw7OTmRRCIhIyMj8vX1pX379sl9R/lY9fPzUxqHsm1cmVjduHEjNW/enKRSKdna2lJoaChlZGSI0vj4+FCvXr1UbovY2Fhq2rQpSaVSMjExIW9vb1q0aJHo5BYRUXFxMU2bNo3q1KlDEomE/Pz85Laz7HdStY7q7l8VtVWI1IsvdWJVnXaPTHU6ulrZ2dmk5GJvjdLR0fnHhs29C27dugUnJyfs3bsXnTp1knt4879NVFQUjh49Kje85V1FRCguLsbgwYORkZGBkydPyqXJzc1FcXHxaysDx9zfON7EVq9ejZkzZ+LatWvvxHD7t1FJSQlKSkqgp6eHJUuWKHyOtqIY57j8G8dl1Tg4OGD69OkIDw9/00V5J6lzfAZKb18wNjb+h0v3duJYrbyCggKYmJggOTlZ4W1/rGKyWO3YsSPq1KmDTZs2KUynqj3NLZw3rFu3btDT06v2bHzvuhMnTmDs2LFvuhg1ZsOGDdDT08PPP//8povCyuB4K3XixAmMGjWKO7nV0KlTpxqdMOPfjONSfffu3UNhYeEbmRNDU/Dxueo4VtX366+/wtPTkzu51TBz5kzo6enh6NGjVc6Dr+i+Ia9evcKFCxeE1++9994/MuEJ+2f89ddfwoyDUqlU4ax4fEX3n8PxxmratWvX8OzZMwClV9hkk5SVxVd0VeO4ZG+COsdngK/olsWxyt6EBw8e4N69ewBKZx2XTVxVnqr2NHd0GXtDuKPLmGbjji5j7y7u6DL2buChy4wxxhhjjDHG/jW4o8sYY4wxxhhjTKP8Y0OXtbS0eOITxsooKSkB0esLP445xt4sRTHOccnYu4GI+D5Uxt4BqtrT/9j84LIpohlj/wyOOcbePhyXjDHG2D+DTyszxhhjjDHGGNMo3NFljDHGGGOMMaZRuKPLGGOMMcYYY0yjcEeXMcYYY4wxxphG4Y4uY4wxxhhjjDGNwh1dxhhjjDHGGGMahTu6jDHGGGOMMcY0Cnd0GWOMMcYYY4xpFO7oMsYYY4wxxhjTKNzRZYwxxhhjjDGmUbijyxhjjDHGGGNMo3BHlzHGGGOMMcaYRuGOLmOMMcYYY4wxjcIdXcYYY4wxxhhjGoU7uowxxhhjjDHGNAp3dBljjDHGGGOMaRTu6DLGGGOMMcYY0yjc0WWMMcYYY4wxplG4o8sYY4wxxhhjTKNwR5cxxhhjjDHGmEbhji5jjDHGGGOMMY3CHV3GGGOMMcYYYxqFO7qMMcYYY4wxxjQKd3QZY4wxxhhjjGkU7ugyxhhjjDHGGNMo3NFljDHGGGOMMaZRuKPLGGOMMcYYY0yjcEeXMcYYY4wxxphG4Y4uY4wxxhhjjDGNwh1dxhhjjDHGGGMahTu6jDHGGGOMMcY0Cnd0GWOMMcYYY4xpFO7oMsYYY4wxxhjTKNzRZYwxxhhjjDGmUbijyxhjjDHGGGNMo3BHlzHGGGOMMcaYRuGOLmOMMcYYY4wxjcIdXcYYY4wxxhhjGoU7uowxxhhjjDHGNAp3dBljjDHGGGOMaRTu6DLGGGOMMcYY0yjc0WWMMcYYY4wxplG4o8sYY4wxxhhjTKNwR5cxxhhjjDHGmEb5P6WJcP4BzXr4AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15,7))\n",
    "plot_tree(policy_learner.model_pi)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatively, one can construct a policy directly from the ITE estimated from a X-learner."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "learner_x = BaseXRegressor(LGBMRegressor())\n",
    "ite_x = learner_x.fit_predict(X=X, treatment=W, y=Y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this example policy learner outperforms the ITE-based policy and gets close to the true optimal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>DR-DT Optimal</th>\n",
       "      <th>True Optimal</th>\n",
       "      <th>X Learner</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.157055</td>\n",
       "      <td>0.183291</td>\n",
       "      <td>0.083172</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   DR-DT Optimal  True Optimal  X Learner\n",
       "0       0.157055      0.183291   0.083172"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({\n",
    "    'DR-DT Optimal': [np.mean((policy_learner.predict(X) + 1) * tt / 2)],\n",
    "    'True Optimal': [np.mean((np.sign(tt) + 1) * tt / 2)],\n",
    "    'X Learner': [\n",
    "        np.mean((np.sign(ite_x) + 1) * tt / 2)\n",
    "    ],\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
